/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Button, Text, TextArea, useToast,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {itemA下结论} from "./Conclusion";
import {itemA单特性} from "../../industrial/EditorFeature";
import {itemA检验项} from "./AppendixPage";
import {config资料审查补, itemA查材料} from "./MaterialReview";
import {itemA宏观检查} from "./Macroscopic";
import {itemA防腐温} from "./Anticorrosive";
import {itemA电性能} from "./ElectricalPerf";
import {itemA阴保} from "./CathodicProtect";

//检验结论报告 结论页概况
//管道特殊： 装置级别“管道编号”字段没啥用，保留可录入。
export const config设备概况 = [
    [['使用单位', '_$使用单位'],],
    [['单位地址', '_$使用单位地址'],],
    [['安全管理人员', '安全员'], ['联系电话', '安全员电'],],
    [['邮政编码', '_$使用单位邮编'], ['压力管道代码','_$设备代码'],  ],
    //管道的台账里面:设备(装置)名称:   “管道设备名”，  “设备名称”
    [['管道名称', '_$管道设备名'],  ],
    //投用日期: 还是不用台账的。 还是：需报告自己录入。而且不是日期的。
    [['使用登记证编号', '_$使用证号'],  ['投用日期', {n:'投用日',t:'l',l:["见管道特性表"]}], ],
    //管道长度 也不用台账的。 实际检验的一部分？  【当前报告】录入。
    [[{pr: '性能参数', span: 4, t: '管道长度'}, {n: '管道长', u: 'km'},], ['管道规格', {n: '管规格', t: 'l', l: ["见管道特性表"],u:'mm'},],],
    [[{t: '设计压力'}, {n: '设压力', u: 'MPa', t: 'l', l: ["见管道特性表"]}], ['设计温度', {n: '设计温', u: '℃', t: 'l', l: ["见管道特性表"]}],],
    [[{t: '设计介质'}, {n: '设介质', t: 'l', l: ["见管道特性表"]}], ['管道材质', {n: '管材质', t: 'l', l: ["见管道特性表"]}]],
    [[{t: '操作压力'}, {n: '操压力', u: 'MPa', t: 'l', l: ["见管道特性表"]}], ['操作温度', {n: '操温度', u: '℃', t: 'l', l: ["见管道特性表"]}]],
];

export const tail附页= <Text css={{"@media print": {fontSize: '0.75rem'}}}>
    注：没有或者未进行的检查项目在检查结果栏打“—”；无问题或者合格的检查项目在检查结果栏打“√”；有 问题或者不合格的检查项目在检查结果栏打“×”，并且在备注栏中说明。
</Text>;

/**开启编制时的：默认值初始化操作。  若打印：本编辑器全部都不显示。
 * */
export const EntranceSetup =
React.forwardRef((
    {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
) => {
    const atPrint = useMedia('print');
    const toast = useToast();
    const doCheckNames = React.useCallback((verId: string) => {
        const result = assertNamesUnique([{value: rep?.tzFields},
            {value: config设备概况, type:'esnt'},
            {value:[...itemA下结论, ...itemA检验项, ]},
            {value: config资料审查补, type:'esnt'},
            {value:[...itemA查材料, ...itemA宏观检查, ...itemA防腐温, ...itemA电性能, ...itemA阴保,  ...itemA单特性, ]},
            {value:['Projects','附页表'  ]} ]);
        toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
    }, [rep,toast]);
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const getInpFilter = React.useCallback((par: any) => {
        const {_tblFixed, } =par||{};
        return {_tblFixed, };
    }, []);
    const {inp, setInp} = useItemInputControl({ref});
    if (atPrint) return null;
    else return (
        <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                             alone={alone} label={'初始化本报告，默认值配置等'}>
            {process.env.REACT_APP_TEST==='true' && <><div>
                <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                <Text variant="h5">设置待测试表格的各列宽度：</Text>
                <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                              JSON.parse(e.currentTarget.value??'[]');
                              setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
            </div>
            </>}
        </InspectRecordLayout>
    );
});
